package cn.cas.mango.util.dbscan;

import java.util.ArrayList;
import java.util.List;

/**
 * 聚合簇，簇中有许多data
 */
public class Cluster implements Comparable<Cluster> {
    // 簇中的第一个元素
    private final Data core;
    // 簇中的元素，包括第一个元素
    private final List<Data> sim;
    private final List<String> neighborsId;
    public Cluster(Data core) {
        sim = new ArrayList<>();
        this.core = core;
        core.setAdded();
        sim.add(core);
        neighborsId = new ArrayList<>();
    }

    public Data getCore() {
      return core;
    }

    /**
     * 往簇中添加一个元素
     * @param data，要添加的元素
     */
    public void add(Data data) {
        sim.add(data);
        neighborsId.add(data.getId());
    }

  public List<String> getNeighborsId() {
    return neighborsId;
  }

  /**
     * 按照第一个元素去排序
     * @param c2 the object to be compared.
     */
    @Override
    public int compareTo(Cluster c2) {
        return core.compareTo(c2.core);
    }

    /**
     * 获取簇中所有元素
     */
    public List<Data> getSim() {
        return sim;
    }
}
